package com.ymx.darling.session;

import com.ymx.darling.build.Configuration;
import com.ymx.darling.mapper.CallableMapper;
import com.ymx.darling.mapper.SqlMapper;
import com.ymx.darling.transaction.Close;

import java.sql.Connection;

/**
 * SqlSession作为顶级API使用sql操作数据库
 * 该接口的sql编写同mybatis中的SqlSession相同
 * sql的调用支持使用id去调用xml中的sql,同样的也支持直接在方法中编写原生sql或模版sql
 *
 * @author 爱Java的小于
 */
public interface Session extends SqlMapper, CallableMapper, Close {
    /**
     * 提交事务
     */
    void commit();


    /**
     * 事务回滚
     */
    void rollBack();


    /**
     * 返回数据库连接
     * @return Connection
     */
    Connection getConnection();


    /**
     * 返回接口的代理实例
     * @param mapperInterface mapper
     * @param <T> T
     * @return T
     */
    <T> T getMapper(Class<T> mapperInterface);


    /**
     * 返回Configuration配置
     * @return Config
     */
    Configuration getConfiguration();
}